Προφανώς αναφέρεται στα handles της C++/CLI.Εν ολίγοις ένα handle είναι μια αναφορά σε ένα managed αντικείμενο,διαχειριζόμενο από το .NET και τον garbage collector.Ένα παράδειγμα:
System::Timer::Timers ^mytimer=gcnew System::Timers::Timer();
mytimer->Start();
(btw θα έπρεπε να υπάρχει syntax highlighting και για την C++/CLI στο site)
έχει λοιπόν μια σύνταξη ανάλογη με τον pointer των unmanaged αντικειμένων.Σε πολλές άλλες γλώσσες δεν υπάρχει σαφής διαχωρισμός στην σύνταξη μεταξύ value και reference objects
(C#,VB.NET κ.α) όμως σε μια γλώσσα που κυριαρχείται από τους δείκτες μια τέτοια διάκριση είναι απαραίτητη.Και για να υπάρχει επίσης διάκριση ανάμεσα στους pointers και τις managed
references που διαφέρουν ριζικά (pointer arithmetics σε managed references δεν γίνονται π.χ) φτιάχτηκαν τα handles.
Αυτό που είδες δηλαδή ΔΕΝ είναι Standard C++,αλλά C++/CLI,ένα υπερσύνολο της ISO C++ με managed extensions που αποτελεί το πρότυπο ECMA 372.Χαρακτηριστικό της γλώσσας αυτής
είναι η εξαιρετική άνεση την οποία προσφέρει και στα πιο δύσκολα interop σενάρια,αλλά επίσης χαρακτηριστικό είναι η μεγάλη έλλειψη υποστήριξης της από τη Microsoft (στην οποία
προφανώς δεν αρέσουν τα mixed code assemblies).
Αφού ξεκαθαρίστηκε (ελπίζω) το θέμα να σου αναφέρω ότι με το compiler switch /clr:oldsyntax (στο Common Language Runtime support των properties) μπορείς να επιστρέψεις στην
Managed C++,τον προκάτοχο της C++/CLI για .NET programming που όμως δεν συνίσταται καθόλου,έχει πάρα πολλά προβλήματα στην σύνταξη αλλά δεν κάνει σαφή διαχωρισμό μεταξύ
pointers και unmanaged references.Το παραπάνω παράδειγμα θα ήταν:
System::Timer::Timers *mytimer=new System::Timers::Timer();
mytimer->Start();